package com.sdy.supermarket.biz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sdy.common.model.BizException;
import com.sdy.supermarket.biz.model.GsApp;
import com.sdy.mvc.service.BaseService;
import com.sdy.supermarket.biz.vo.AppIpInterfaceVO;
import com.sdy.supermarket.biz.vo.AppIpUpdateVO;
import com.sdy.supermarket.biz.vo.IpResListVo;
import com.sdy.supermarket.biz.vo.UserResListVo;

import java.util.List;

/**
 * <p>
 * 自建系统 服务类
 * </p>
 *
 * @author zzq
 * @since 2019-08-22
 */
public interface GsAppService extends BaseService<GsApp> {

    /**
     * 用户自建系统列表
     *
     * @param userId 用户id
     */
    List<GsApp> listApp(Integer userId);

    /**
     * 查询自建系统
     *
     * @param id
     */
    GsApp getApp(Integer id);

    /**
     * 用户获取所能够使用的资源列表
     *
     * @param userId
     * @return
     */
    List<IpResListVo> listUserRes(Integer userId, Page page, Integer ipId) throws BizException;

    /**
     * 创建自建系统
     *
     * @param gsApp
     */
    void createApp(GsApp gsApp) throws BizException;

    /**
     * 更新自建系统
     *
     * @param gsApp
     */
    void updateApp(GsApp gsApp, Integer userId) throws BizException;

    /**
     * 删除自建系统
     *
     * @param appId
     */
    void removeApp(Integer appId);

    /**
     * 查询某个自建系统下绑定的应用
     *
     * @param appId appId
     */
    void queryAppInterface(Integer appId) throws BizException;

    /**
     * 查询某个自建系统的某个ip下绑定的应用
     *
     * @param appId appId
     * @param ip    ip
     */
    List<AppIpInterfaceVO> listAppIpInterfaceBind(Integer appId, String ip) throws BizException;

    /**
     * 给特定ip绑定服务
     *
     * @param userId 操作用户
     * @param gsApp  更新对象
     */
    void bindIpInterface(Integer userId, GsApp gsApp);
}
